package com.rr.hard;

import java.math.BigDecimal;

/**
 * @author zhuangcanrun
 * @Date 2022/01/18/22:32
 * @description
 **/

public class CountVowelPermutation {
    public int countVowelPermutation(int n) {
        BigDecimal[] bigDecimals = new BigDecimal[5];
        bigDecimals[0] = new BigDecimal(1);
        bigDecimals[1] = new BigDecimal(1);
        bigDecimals[2] = new BigDecimal(1);
        bigDecimals[3] = new BigDecimal(1);
        bigDecimals[4] = new BigDecimal(1);
        int current = 1;
        while (current < n) {
            BigDecimal[] tempBigDecimals = new BigDecimal[5];
            tempBigDecimals[0] = bigDecimals[1].add(bigDecimals[2]).add(bigDecimals[4]);
            tempBigDecimals[1] = bigDecimals[0].add(bigDecimals[2]);
            tempBigDecimals[2] = bigDecimals[1].add(bigDecimals[3]);
            tempBigDecimals[3] = bigDecimals[2];
            tempBigDecimals[4] = bigDecimals[2].add(bigDecimals[3]);
            bigDecimals = tempBigDecimals;
            current++;
        }
        return getAns(bigDecimals);
    }

    private int getAns(BigDecimal[] bigDecimals) {
        BigDecimal bigDecimal = new BigDecimal(0);
        for (BigDecimal decimal : bigDecimals) {
            bigDecimal = bigDecimal.add(decimal);
        }
        BigDecimal[] bigDecimalss = bigDecimal.divideAndRemainder(new BigDecimal(Math.pow(10, 9) + 7));
        return bigDecimalss[1].intValue();
    }

    public static void main(String[] args) {
        CountVowelPermutation countVowelPermutation = new CountVowelPermutation();
        System.out.println(countVowelPermutation.countVowelPermutation(1));
    }
}
